

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" href="/img/favicon.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="author" content="Cheney">
  <meta name="keywords" content="Coding">
  
    <meta name="description" content="数据库笔记--SQL部分。基本表的定义、删除、修改。数据定义DDL。数据查询DQL。等">
<meta property="og:type" content="article">
<meta property="og:title" content="数据库笔记--SQL部分">
<meta property="og:url" content="https://cheney822.gitee.io/2021/06/02/%E6%95%B0%E6%8D%AE%E5%BA%93__%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AC%94%E8%AE%B0--SQL%E9%83%A8%E5%88%86/index.html">
<meta property="og:site_name" content="Cheney blog">
<meta property="og:description" content="数据库笔记--SQL部分。基本表的定义、删除、修改。数据定义DDL。数据查询DQL。等">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-06-02T00:22:00.000Z">
<meta property="article:modified_time" content="2022-04-05T13:14:29.095Z">
<meta property="article:author" content="Cheney">
<meta property="article:tag" content="笔记">
<meta property="article:tag" content="数据库">
<meta property="article:tag" content="SQL">
<meta name="twitter:card" content="summary_large_image">
  
  
  <title>数据库笔记--SQL部分 - Cheney blog</title>

  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@4/github-markdown.min.css" />
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hint.css@2/hint.min.css" />

  
    
    
      
      <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@10/styles/github-gist.min.css" />
    
  

  
    <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css" />
  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">


<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    var CONFIG = {"hostname":"cheney822.gitee.io","root":"/","version":"1.8.14","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"right","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"copy_btn":true,"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":1},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml"};
  </script>
  <script  src="/js/utils.js" ></script>
  <script  src="/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 5.4.1"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/">
      <strong>Cheney Blog</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              &nbsp;<i class="iconfont icon-search"></i>&nbsp;
            </a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner" id="banner" parallax=true
         style="background: url('https://imgbed.cheney.cc/Blog_config/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="page-header text-center fade-in-up">
            <span class="h2" id="subtitle" title="数据库笔记--SQL部分">
              
            </span>

            
              <div class="mt-3">
  
  
    <span class="post-meta">
      <i class="iconfont icon-date-fill" aria-hidden="true"></i>
      <time datetime="2021-06-02 08:22" pubdate>
        2021年6月2日 早上
      </time>
    </span>
  
</div>

<div class="mt-1">
  
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      5.7k 字
    </span>
  

  
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      29 分钟
    </span>
  

  
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div class="py-5" id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none">数据库笔记--SQL部分</h1>
            
            <div class="markdown-body">
              <h1 id="3-SQL语言"><a href="#3-SQL语言" class="headerlink" title="3.SQL语言"></a>3.SQL语言</h1><h2 id="3-3数据定义DDL"><a href="#3-3数据定义DDL" class="headerlink" title="3.3数据定义DDL"></a>3.3数据定义DDL</h2><h3 id="模式定义与删除："><a href="#模式定义与删除：" class="headerlink" title="模式定义与删除："></a>模式定义与删除：</h3><h4 id="定义："><a href="#定义：" class="headerlink" title="定义："></a>定义：</h4><blockquote>
<p>REAT　SCHEMA&lt;模式名&gt;　AUTHORIZATION&lt;用户名&gt;</p>
</blockquote>
<p>若未显示的给出模式名，默认为用户名</p>
<ul>
<li>拓展：创建模式同时可以接受创建基本表、视图、授权。<br>REAT　SCHEMA&lt;模式名&gt;　AUTHORIZATION&lt;用户名&gt;[&lt;表定义子句&gt;|&lt;视图……&gt;|&lt;授权……&gt;]</li>
</ul>
<h4 id="删除："><a href="#删除：" class="headerlink" title="删除："></a>删除：</h4><blockquote>
<ul>
<li>DROP SCHEMA&lt;模式名&gt;&lt;CASCADE|RESTRICT&gt;</li>
<li>CASCADE:级联，表示同时把模式下所有数据库对象都删除</li>
<li>RESTRICT：只有当模式下没有任何下属的数据库对象才能执行DROP SCHEMA</li>
</ul>
</blockquote>
<h3 id="基本表的定义、删除、修改"><a href="#基本表的定义、删除、修改" class="headerlink" title="基本表的定义、删除、修改"></a>基本表的定义、删除、修改</h3><p>每一个基本表都属于某一个模式，一个模式包含多个基本表。</p>
<h4 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型:"></a>数据类型:</h4><ul>
<li>域：是关系模型中很重要的概念。每一个属性来自一个域，其取值必须是域中的值。SQL中的域用数据类型来实现。</li>
<li>例如：CHAR(n)表示长度为n的定长字符串，FLOAT(n)精度为n的浮点数。</li>
</ul>
<h4 id="定义：-1"><a href="#定义：-1" class="headerlink" title="定义："></a>定义：</h4><blockquote>
<ul>
<li>CREAT TABLE&lt;表名&gt;(&lt;列名&gt;&lt;数据类型&gt;[列级完整性约束条件]<br>[,&lt;列名&gt;&lt;数据类型&gt;[列级完整性约束条件]]<br>[,&lt;表级完整性约束条件&gt;]);</li>
</ul>
</blockquote>
<ul>
<li>注意:[]内的内容表示可选可不选</li>
</ul>
<h4 id="修改："><a href="#修改：" class="headerlink" title="修改："></a>修改：</h4><blockquote>
<p>ALTER TABLE&lt;表名&gt;<br>[ADD [COLUMN] &lt;新列名&gt;&lt;数据类型&gt;[完整性约束条件]]<br>[ADD[表级完整性约束]]<br>[DROP [COLUMN]&lt;列名&gt;[CASCADE|RESTRICT]]<br>[DROP CONSTRAINT&lt;完整性约束名&gt;[RESTRICT|CASCADE]]<br>[ALTER COLUMN&lt;列名&gt;&lt;数据类型&gt;];</p>
</blockquote>
<h4 id="删除：-1"><a href="#删除：-1" class="headerlink" title="删除："></a>删除：</h4><blockquote>
<p>DROP TABLE&lt;表名&gt;[RESTRICT|CASCADE]</p>
</blockquote>
<ul>
<li>若选择RESTRICT：欲删除的表不能被其他表的约束所引用（如CHECK，FOREIGN KEY等），不能有视图view，不能有触发器trigger，不能有存储过程或函数等。若存在这些依赖该表的对象则此表无法删除</li>
<li>若选择CASACADE：删除无限制，删除基本表时直接删除相关依赖（索引、触发器等）。</li>
</ul>
<h3 id="索引"><a href="#索引" class="headerlink" title="索引"></a>索引</h3><h4 id="建立："><a href="#建立：" class="headerlink" title="建立："></a>建立：</h4><blockquote>
<p>CREATE [UNIQUE][CLUSTER] INDEX &lt;索引名&gt; ON &lt;表名&gt;(&lt;列名&gt;[&lt;次序&gt;][,&lt;列名&gt;[&lt;次序&gt;]]……);</p>
</blockquote>
<ul>
<li>&lt;表名&gt;是要建索引表的名字。索引可建立在该表的一列或多列上，各列名之间用逗号分隔。每个列名后可以用次序指定排列顺序，可选ASC(升序)(默认)或者DESC(降序)。</li>
<li>UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录</li>
<li>CLUSTER 表示要建立的是聚簇索引。</li>
</ul>
<h4 id="修改"><a href="#修改" class="headerlink" title="修改"></a>修改</h4><blockquote>
<p>ALTER　INDEX&lt;旧索引名&gt; RENAME TO&lt;新索引名&gt;；</p>
</blockquote>
<h4 id="删除"><a href="#删除" class="headerlink" title="删除"></a>删除</h4><blockquote>
<p>DROP INDEX &lt;索引名&gt;；</p>
</blockquote>
<h2 id="3-4数据查询DQL"><a href="#3-4数据查询DQL" class="headerlink" title="3.4数据查询DQL"></a>3.4数据查询DQL</h2><h3 id="SELECT语句一般格式"><a href="#SELECT语句一般格式" class="headerlink" title="SELECT语句一般格式"></a>SELECT语句一般格式</h3><blockquote>
<p>SELECT [ALL|DISTINCT]&lt;目标列表达式&gt;[,&lt;目标列表达式&gt;]……<br>FROM &lt;表名/视图名&gt;[,&lt;表名/视图名&gt;……]|(&lt;SELECT语句&gt;) [AS] &lt;别名&gt;<br>[WHERE&lt;条件表达式&gt;]<br>[GROUP BY &lt;列名1&gt;[HAVING&lt;条件表达式&gt;]]<br>[ORDER BY &lt;列名2&gt;[ASC|DESC]] ;</p>
</blockquote>
<p><strong>含义：</strong></p>
<ul>
<li>根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找到满足条件的元组，再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。</li>
<li>如果有GROUP BY子句，则将结果按&lt;列名1&gt;的值进行分组，该属性相等的元组为一个组。通常会在每组中作用聚集函数。如果GROUP BY子句带HAVING短语，则只有满足指定条件的组才予以输出</li>
<li>如果有ORDER BY子句，则结果还要按&lt;列名2&gt;的值按照（ASC|DESC）排序。</li>
</ul>
<h3 id="单表查询"><a href="#单表查询" class="headerlink" title="单表查询"></a>单表查询</h3><h4 id="选择若干列"><a href="#选择若干列" class="headerlink" title="选择若干列"></a>选择若干列</h4><p>查询指定列或全部列</p>
<blockquote>
<p>SELECT &lt;目标列表达式&gt; #查询指定列<br>SELECT * #查询全部列</p>
</blockquote>
<p>目标列表达式：不仅可以是表中的列，也可以是表达式    </p>
<ul>
<li>例如：SELECT Sname,<strong>2021-Sage</strong></li>
</ul>
<p>目标列表达式：还可以是字符串常量、函数等</p>
<ul>
<li>例如：SELECT Sname,”CHENEY”,LOWER(Sdept)</li>
<li>这里”CHENEY”是字符串，”LOWER”是函数(用于将字母全部转化为小写)</li>
</ul>
<p>用户可以指定别名：直接在要指定别名的目标列表达式的后面加空格写出别名即可</p>
<ul>
<li>例如：SELECT Sname,2021-Sage BIRTHDAY</li>
<li>这里就给2021-Sage 取了别名叫 BIRTHDAY</li>
</ul>
<h4 id="选择若干行"><a href="#选择若干行" class="headerlink" title="选择若干行"></a>选择若干行</h4><p>消除重复的行：</p>
<blockquote>
<p>用DISTINCT可以消除重复的行</p>
</blockquote>
<ul>
<li>例如：SELECT DISTINCT Sno FROM SC;</li>
<li>若没有指定DISTINCT 默认为ALL</li>
</ul>
<p><strong>对行进行筛选(查询满足条件的元组):</strong></p>
<blockquote>
<p>用WHERE子句实现</p>
</blockquote>
<p><strong>常用的查询条件表:</strong><br>功能 | 形式<br>-|-<br>比较：| =,&gt;,&lt;,&gt;=,&lt;=,!=，等<br>确定范围：|(NOT)BETWEEN AND<br>确定集合：|(NOT)IN<br>字符匹配：|(NOT)LIKE<br>空值：|IS (NOT) NULL<br>逻辑运算：|AND,OR,NOT      </p>
<p><strong>用法：</strong></p>
<blockquote>
<ul>
<li>BETWEEN a AND b #a,b都是数值，相当于 a&lt; x &lt;b      </li>
<li>IN(“ONE”,”TWO”,”THREE”) #括号内元素间以逗号分隔       </li>
<li>多个条件之间用AND、OR、NOT连接而不是逗号连接(NOT&gt;AND&gt;OR)     </li>
</ul>
</blockquote>
<p><strong>LIKE的用法：</strong></p>
<blockquote>
<p>格式：[NOT] LIKE “&lt;匹配串&gt;” [ESCAPE”&lt;换码字符&gt;”]<br>含义：查找与&lt;匹配串&gt;相符的行</p>
</blockquote>
<p>通配符：%、_、\</p>
<ul>
<li>‘%’代表任意长度（可以为0）的字符串</li>
<li>‘_’代表任意单个字符</li>
<li>‘&#39;转移字符通常用于匹配通配符本身代表的符号</li>
</ul>
<h4 id="ORDER-BY-子句"><a href="#ORDER-BY-子句" class="headerlink" title="ORDER BY 子句"></a>ORDER BY 子句</h4><p>用户可以对查询结果用ORDER BY子句按照一个或多个属性列的升序(ASC)或降序(DESC)排列，默认为升序。</p>
<h4 id="聚集函数"><a href="#聚集函数" class="headerlink" title="聚集函数"></a>聚集函数</h4><table>
<thead>
<tr>
<th>函数</th>
<th>功能</th>
</tr>
</thead>
<tbody><tr>
<td>COUNT(*)</td>
<td>统计行数</td>
</tr>
<tr>
<td>SUM</td>
<td>求一列的和</td>
</tr>
<tr>
<td>AVG</td>
<td>求一列的均值</td>
</tr>
<tr>
<td>MAX</td>
<td>求一列的最大值</td>
</tr>
<tr>
<td>MIN</td>
<td>求一列的最小值</td>
</tr>
<tr>
<td>用法：</td>
<td></td>
</tr>
</tbody></table>
<blockquote>
<p>函数名 [DISTINCT|ALL] &lt;列名&gt;</p>
</blockquote>
<h4 id="GROUP-BY子句"><a href="#GROUP-BY子句" class="headerlink" title="GROUP BY子句"></a>GROUP BY子句</h4><ul>
<li>结果按&lt;列名1&gt;的值进行分组，该属性相等的元组为一个组。通常会在每组中作用聚集函数。如果GROUP BY子句带HAVING短语，则只有满足指定条件的组才予以输出</li>
</ul>
<p>形式：</p>
<blockquote>
<p>[GROUP BY &lt;列名1&gt;[HAVING&lt;条件表达式&gt;]]  </p>
</blockquote>
<p>HAVING和WHERE的区别在于作用对象不同。WHERE作用于基本表或视图，从中选择满足条件的元组。HAVING短语作用于组，从中选择满足条件的组。</p>
<h3 id="连接查询"><a href="#连接查询" class="headerlink" title="连接查询"></a>连接查询</h3><p>同时涉及两个以上的表的查询称为连接查询</p>
<h4 id="等值与非等值连接"><a href="#等值与非等值连接" class="headerlink" title="等值与非等值连接"></a>等值与非等值连接</h4><p>连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词，一般格式为：</p>
<blockquote>
<p>[表名1.]&lt;列名1&gt;&lt;比较运算符&gt; [&lt;表名2.&gt;]&lt;列名2&gt;<br>或者：[表名1.]&lt;列名1&gt; BETWEEN [&lt;表名2.&gt;]&lt;列名2&gt; AND [&lt;表名2.&gt;]&lt;列名3&gt;</p>
</blockquote>
<p>当连接运算符为=时称为等值连接否则为非等值连接。</p>
<h4 id="自身连接"><a href="#自身连接" class="headerlink" title="自身连接"></a>自身连接</h4><p>一个表与自己连接称为自身连接。一个表出现两次，不易区分，故应给表取别名用于区分。</p>
<blockquote>
<p>FROM Course A,Course B WHERE A.Cno = B.Sno;<br>这里Course做了自身连接，两次用到course表分别称为A、B</p>
</blockquote>
<h4 id="外连接"><a href="#外连接" class="headerlink" title="外连接"></a>外连接</h4><p>外连接分为外左连接(left outer join)和外右连接(right outer join)</p>
<ul>
<li>from 后面直接写两个表名，这样写等价于内连接 如果不写 where 条件，相当于笛卡尔积。</li>
<li>带有 where 条件 相当于内连接。</li>
</ul>
<ul>
<li>左联接，是包括 A,B 表的交集 和 A 表的数据 （A eft join B on A.1=B.1），如果 A 表中有的数据 B 表没有找到相等的，会显示A表的数据，B表中的部分会为 null<blockquote>
<p>select <select list> from A left join B on A.id = B.id</p>
</blockquote>
</li>
<li>右外链接，同左外链接一样，包括并集和B表的数据。</li>
</ul>
<h3 id="嵌套查询"><a href="#嵌套查询" class="headerlink" title="嵌套查询"></a>嵌套查询</h3><p>SQL语言中，一个SELECT-FROM-WHERE语句块称为一个查询块，将一个查询快嵌入到另一个WHERE子句或者HAVING短语的条件中的查询称为嵌套查询。<br>被嵌套的内部查询称为子查询，如果子程序的查询条件不依赖于父查询，称为不相关子查询。</p>
<h4 id="带有IN谓词的子查询"><a href="#带有IN谓词的子查询" class="headerlink" title="带有IN谓词的子查询"></a>带有IN谓词的子查询</h4><p>条件：子查询的结果是一个集合</p>
<blockquote>
<p>例如：……WHERE Sno IN (SELECT ……);</p>
</blockquote>
<h4 id="带有比较运算的子查询"><a href="#带有比较运算的子查询" class="headerlink" title="带有比较运算的子查询"></a>带有比较运算的子查询</h4><p>条件：子查询的结果是一个值</p>
<blockquote>
<p>例如：……WHERE Sno &gt; (SELECT ……);</p>
</blockquote>
<h4 id="带有-ANY-SOME或ALL的子查询"><a href="#带有-ANY-SOME或ALL的子查询" class="headerlink" title="带有(ANY)SOME或ALL的子查询"></a>带有(ANY)SOME或ALL的子查询</h4><table>
<thead>
<tr>
<th>符号</th>
<th>含义</th>
</tr>
</thead>
</table>
<blockquote>
<p>/&lt;/&gt;=/&lt;=  SOME | 大(小)于或大(小)于等于 查询结果中的某个值<br>/&lt;/&gt;=/&lt;=  ALL |大(小)于或大(小)于等于 查询结果中的所有值<br>!=/= SOME | (不)等于查询结果中的某个值<br>!=/= ALL | (不)等于查询结果中的所有值(没什么实际含义)</p>
</blockquote>
<p><strong>一些等价关系</strong><br>……| = |!= | &lt; | &lt;= | &gt; | &gt;=<br>-|-|-|-|-|-|-|-<br>SOME |IN|……|&lt; MAX|&lt;= MAX|&gt; MIN|&gt;= MIN<br>ALL | ……|NOT IN|&lt; MIN|&lt;=MIN|&gt;MAX|&gt;=MAX</p>
<h4 id="带有EXISTS的子查询"><a href="#带有EXISTS的子查询" class="headerlink" title="带有EXISTS的子查询"></a>带有EXISTS的子查询</h4><p>EXISTS代表存在量词，带有其的子查询不返回任何数据，只产生逻辑值真true/假false</p>
<p>EXISTS可以替代所有的带IN、比较运算符、SOME&amp;ALL的子查询，反之不一定。</p>
<blockquote>
<p>例如：查询没有选修一号课程的学生姓名<br>SELECT Sname FROM Student WHERE NOT EXISTS<br>(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno = ‘1’);</p>
</blockquote>
<p>由EXISTS引出的子查询，其目标表达式通常都用* 。</p>
<p>SQL中没有全称量词，但可以通过存在量词转换而来(NOT EXISTS NOT……)</p>
<h3 id="集合查询"><a href="#集合查询" class="headerlink" title="集合查询"></a>集合查询</h3><p>SELECT的查询结果是元组的集合，所以多个SELECT集合可以进行集合操作，如并UNION、交INTERSECT、差EXCEPT。UNION操作系统自动去除重复元组，如果需要保留采用UNION ALL即可。</p>
<blockquote>
<p>形式：SELECT * FROM A INTERSECT\EXCEPT\UNION SELECT * FROM B</p>
</blockquote>
<h3 id="基于派生表的查询"><a href="#基于派生表的查询" class="headerlink" title="基于派生表的查询"></a>基于派生表的查询</h3><p>子查询不仅可以出现在WHERE中，还可以出现在FROM子句中，这时子查询生成的临时派生表成为主查询的对象。</p>
<p>通过FROM子句生成派生表时，AS关键字可以省略，但必须为派生表取别名。</p>
<h2 id="3-5数据更新DCL"><a href="#3-5数据更新DCL" class="headerlink" title="3.5数据更新DCL"></a>3.5数据更新DCL</h2><p>更新操作通常有三种：添加、修改、删除。</p>
<h3 id="插入"><a href="#插入" class="headerlink" title="插入"></a>插入</h3><p><strong>插入元组</strong></p>
<blockquote>
<p>INSERT INTO&lt;表名&gt; [(&lt;属性列1&gt;[,&lt;属性列2&gt;]……)] VALUES (&lt;常量1&gt;[,&lt;常量2&gt;……]);</p>
</blockquote>
<p>插入子查询结果</p>
<h3 id="修改-1"><a href="#修改-1" class="headerlink" title="修改"></a>修改</h3><p><strong>一般格式</strong></p>
<blockquote>
<p>UPDATE &lt;表名&gt; SET &lt;列名&gt;=&lt;表达式&gt; [,&lt;列名&gt;=&lt;表达式&gt;]…… [WHERE&lt;条件&gt;];</p>
</blockquote>
<p>功能是修改指定表中满足WHERE子句条件的元组，SET子句给出表达式的值用于取代原有的值。省略WHERE子句表示修改表中所有元组。</p>
<h3 id="删除-1"><a href="#删除-1" class="headerlink" title="删除"></a>删除</h3><p>一般格式</p>
<blockquote>
<p>DELETE FROM&lt;表名&gt; [WHERE&lt;条件&gt;];</p>
</blockquote>
<p>功能：删除满足WHERE子句条件的所有元组。若省略WHERE子句表示清空表，但不是删除表，表还在。</p>
<h2 id="3-6空值的处理"><a href="#3-6空值的处理" class="headerlink" title="3.6空值的处理"></a>3.6空值的处理</h2><p><strong>定义：</strong><br>所谓空值就是”不知道”、”不存在”或”无意义”的值。</p>
<p><strong>判断：</strong><br>用IS NULL 和 IS NOT NULL 判断。</p>
<p><strong>约束：</strong><br>NOT NULL属性的不能取空值，UNIQUE属性的不能取空值，码属性不能取空值。</p>
<p><strong>运算</strong><br>空值与其他所有值的算术运算结果为空NULL<br>空值与其他所有值的比较结果为UNKNOW(破坏了二值逻辑)<br>含UNKNOWN的逻辑运算结果：</p>
<h2 id="3-7视图"><a href="#3-7视图" class="headerlink" title="3.7视图"></a>3.7视图</h2><h4 id="意义"><a href="#意义" class="headerlink" title="意义"></a>意义</h4><p>视图是从一个或几个基本表或视图导出的虚表，数据库中只存放视图的定义，而不存放对应的数据，数据仍存放在原基本表中。</p>
<h4 id="作用"><a href="#作用" class="headerlink" title="作用"></a>作用</h4><ul>
<li>简化用户操作</li>
<li>让用户以多角度看待同一数据</li>
<li>对重构数据库提供了一定的逻辑独立性</li>
<li>提供安全保护</li>
<li>更清晰的表达查询</li>
</ul>
<h4 id="建立"><a href="#建立" class="headerlink" title="建立"></a>建立</h4><blockquote>
<p>CREATE VIEW&lt;&gt;[(&lt;列名&gt;[,&lt;列名&gt;])……] AS&lt;子查询&gt;[WITH CHECK OPTION];</p>
</blockquote>
<p>WITH CHECK OPTION表示对视图进行UPDATE、INSERT、DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(子查询中的条件表达式)</p>
<p>组成视图的属性列名或者全部省略或者全部指定。若省略属性名，默认由SELECT的目标列所有字段组成。</p>
<h4 id="删除-2"><a href="#删除-2" class="headerlink" title="删除"></a>删除</h4><blockquote>
<p>DROP VIEW &lt;视图名&gt; [CASCADE];</p>
</blockquote>
<p>CASCADE 级联删除可以将该视图上导出的其他视图全部一起删除。</p>
<h4 id="查询"><a href="#查询" class="headerlink" title="查询"></a>查询</h4><p>对已经定义的视图，用户可以像对基本表一样对视图进行查询。</p>
<h4 id="更新"><a href="#更新" class="headerlink" title="更新"></a>更新</h4><ul>
<li>对已经定义的视图，用户可以像对基本表一样对视图进行INSERT、DELETE、UPDATE的更新操作</li>
<li>由于视图是不实际存储数据的虚表，因此对视图的更新最终要转换为对基本表的更新。</li>
<li>并不是所有视图都可以更新的，有些视图无法唯一转换成对应的基本表的更新。目前的数据库管理系统通常只允许对行列子集视图进行更新。</li>
</ul>

            </div>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/%E7%AC%94%E8%AE%B0/">笔记</a>
                    
                      <a class="hover-with-bg" href="/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a>
                    
                      <a class="hover-with-bg" href="/tags/SQL/">SQL</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">
                  
                    本博客所有文章除特别声明外，均采用 <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！
                  
                </p>
              
              
                <div class="post-prevnext">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/2021/06/03/%E6%95%B0%E6%8D%AE%E5%BA%93__%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%A6%E4%B9%A0%E4%B8%80%E7%AB%99%E5%BC%8F%E5%85%A5%E9%97%A8%E8%B5%84%E6%96%99%EF%BC%88%E7%BA%AF%E5%B9%B2%E8%B4%A7%EF%BC%89/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">数据库入门资料</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/2021/06/01/%E6%95%B0%E6%8D%AE%E5%BA%93__SQL%E8%AF%AD%E5%8F%A5%E7%BB%83%E4%B9%A0/">
                        <span class="hidden-mobile">SQL语句练习</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
          </article>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div class="toc-body" id="toc-body"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
    

    
  </main>

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://cheney822.gitee.io/" target="_blank" rel="nofollow noopener"><span>备用网址</span></a> 
  </div>
  

  
  <!-- 备案信息 -->
  <div class="beian">
    <span>
      <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">
        皖ICP备2022002876号-1
      </a>
    </span>
    
  </div>


  
</footer>


  <!-- SCRIPTS -->
  
  <script  src="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" ></script>
<script  src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.min.js" ></script>
<script  src="/js/events.js" ></script>
<script  src="/js/plugins.js" ></script>

<!-- Plugins -->


  <script  src="/js/local-search.js" ></script>



  
    <script  src="/js/img-lazyload.js" ></script>
  



  



  
    <script  src="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/anchor-js@4/anchor.min.js" ></script>
  
  
    <script defer src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js" ></script>
  






  <script  src="https://cdn.jsdelivr.net/npm/typed.js@2/lib/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var title = document.getElementById('subtitle').title;
      
        typing(title);
      
    })(window, document);
  </script>















<!-- 主题的启动项 保持在最底部 -->
<script  src="/js/boot.js" ></script>


</body>
</html>
